/**
 * Created by John on 2016/5/19.
 */

exports.book = {
    '书名': 'Node.js 开发指南',
    '目录': [
        {
            '第1章': 'Node.js 简介',
            '1.1': 'Node.js 是什么',
            '1.2': 'Node.js 能做什么',
            '1.3': '异步式 I/O 与事件驱动',
            '1.4': 'Node.js 的性能',
            '1.4.1': 'Node.js 架构简介',
            '1.4.2': 'Node.js 与 PHP + Nginx',
            '1.5': 'JavaScript 简史',
            '1.5.1': 'Netscape 与 LiveScript',
            '1.5.2': 'Java 与 JavaScript',
            '1.5.3': '微软的加入——JScript',
            '1.5.4': '标准化——ECMAScript',
            '1.5.5': '浏览器兼容性问题',
            '1.5.6': '引擎效率革命和 JavaScript 的未来',
            '1.6': 'CommonJS',
            '1.6.1': '服务端 JavaScript 的重生',
            '1.6.2': 'CommonJS 规范与实现',
            '1.7': '参考资料'
        },
        {
            '第2章': '安装和配置 Node.js',
            '2.1': '安装前的准备',
            '2.2': '快速安装',
            '2.2.1': 'Microsoft Windows 系统上安装 Node.js',
            '2.2.2': 'Linux 发行版上安装 Node.js',
            '2.2.3': 'Mac OS X 上安装 Node.js',
            '2.3': '编译源代码',
            '2.3.1': '在 POSIX 系统中编译',
            '2.3.2': '在 Windows 系统中编译',
            '2.4': '安装 Node 包管理器',
            '2.5': '安装多版本管理器',
            '2.6': '参考资料',
        },
        {
            '第3章': 'Node.js 快速入门',
            '3.1': '开始用 Node.js 编程',
            '3.1.1': 'Hello World',
            '3.1.2': 'Node.js 命令行工具',
            '3.1.3': '建立 HTTP 服务器',
            '3.2': '异步式 I/O 与事件式编程',
            '3.2.1': '阻塞与线程',
            '3.2.2': '回调函数',
            '3.2.3': '事件',
            '3.3': '包',
            '3.3.1': '什么是模块',
            '3.3.2': '创建及加载模块',
            '1': '创建模块',
            '2': '单次加载',
            '3': '覆盖 exports',
            '3.3.3': '创建包',
            '1': '作为文件夹的模块',
            '2': 'package.json',
            '3.3.4': 'Node.js 包管理器',
            '1': '获取一个包',
            '2': '本地模式和全局模式',
            '3': '创建全局链接',
            '4': '包的发布',
            '3.4': '调试',
            '3.4.1': '命令行调试',
            '3.4.2': '远程调试',
            '3.4.3': '使用 Eclipse 调试 Node.js',
            '1': '配置调试环境',
            '2': '使用 Eclipse 调试 Node.js 程序',
            '3.4.4': '使用 node-inspector 调试 Node.js',
            '3.5': '参考资料'
        },
        {
            '第4章': 'Node.js 核心模块',
            '4.1': '全局对象',
            '4.1.1': '全局对象与全局变量',
            '4.1.2': 'process',
            '4.1.3': 'console',
            '4.2': '常用工具 until',
            '4.2.1': 'unil.inherits',
            '4.2.2': 'util.inspect',
            '4.3': '事件驱动 events',
            '4.3.1': '事件发射器',
            '4.3.2': 'error 事件',
            '4.3.3': '继承 eventEmitter',
            '4.4': '文件系统 fs',
            '4.4.1': 'fs.readFile',
            '4.4.2': 'fs.readFileSync',
            '4.4.3': 'fs.open',
            '4.4.4': 'fs.read',
            '4.5': 'HTTP 服务器与客户端',
            '4.5.1': 'HTTP 服务器',
            '1': 'http.Server 的事件',
            '2': 'http.ServerRequest',
            '3': '获取 GET 请求内容',
            '4': '获取 POST 请求内容',
            '5': 'http.ServerResponse',
            '4.5.2': 'HTTP 客户端',
            '1': 'http.ClientRequest',
            '2': 'http.ClientResponse',
            '4.6': '参考资料'
        },
        {
            '第5章': '使用 Node.js 进行 Web 开发',
            '5.1': '准备工作',
            '5.1.1': '使用 http 模块',
            '5.1.2': 'Express 框架',
            '5.2': '快速开始',
            '5.2.1': '安装 Express',
            '5.2.2': '建立工程',
            '5.2.3': '启动服务器',
            '5.2.4': '工程的结构',
            '5.3': '路由控制',
            '5.3.1': '工作原理',
            '5.3.2': '创建路由规则',
            '5.3.3': '路径匹配',
            '5.3.4': 'REST 风格的路由规则',
            '5.3.5': '控制权转移',
            '5.4': '模板引擎',
            '5.4.1': '什么是模板引擎',
            '5.4.2': '使用模板引擎',
            '5.4.3': '页面布局',
            '5.4.4': '片段视图',
            '5.4.5': '视图助手',
            '5.5': '建立微博网站',
            '5.5.1': '功能分析',
            '5.5.2': '路由规划',
            '5.5.3': '界面设计',
            '5.5.4': '使用 Bootstrap',
            '5.6': '用户注册和登录',
            '5.6.1': '访问数据库',
            '1': 'NoSQL',
            '2': 'MongoDB',
            '3': '连接数据库',
            '5.6.2': '会话支持',
            '5.6.3': '注册和登入',
            '5.6.4': '页面权限控制',
            '5.7': '发表微博',
            '5.7.1': '微博模型',
            '5.7.2': '发表微博',
            '5.7.3': '用户页面',
            '5.7.4': '首页',
            '5.7.5': '下一步',
            '5.8': '参考资料'
        },
        {
            '第6章': 'Node.js 进阶话题',
            '6.1.1': '模块加载机制',
            '6.1.2': '按路径加地模块',
            '6.1.3': '通过查找 node_modules 目录加载模块',
            '6.1.4': '加载缓存',
            '6.2': '控制流',
            '6.2.1': '循环的陷阱',
            '6.2.2': '解决控制流难题',
            '6.3': 'Node.js 应用部署',
            '6.3.1': '日志功能',
            '6.3.2': '使用 cluster 模块',
            '6.3.3': '启动脚本',
            '6.3.4': '共享 80 端口',
            '6.4': 'Node.js 不是银弹',
            '0': '不适合做什么',
            '1': '计算密集型的程序',
            '2': '单用户多任务型应用',
            '3': '逻辑十分复杂的事务',
            '4': 'Unicode 与国际化',
            '6.5': '参考资料'
        }
    ],
    '附录': [
        {
            'A': 'JavaScript 的高级特性',
            'A.1': '作用域',
            'A.1.1': '函数作用域',
            'A.1.2': '全局作用域',
            'A.2': '闭包',
            'A.2.1': '什么是闭包',
            'A.2.2': '闭包的用途',
            '1': '嵌套的回调函数',
            '2': '实现私有成员',
            'A.3': '对象',
            'A.3.1': '创建和访问',
            '1': '使用关联数组访问对象成员',
            '2': '使用对象初始化器创建对象',
            'A.3.2': '构造函数',
            'A.3.3': '上下文对象',
            '1': 'call 和 apply',
            '2': 'bind',
            '3': '理解 bind',
            'A.3.4': '原型'
        },
        {
            'B': 'Node.js 编程规范',
            'B.1 缩进': '4空格、2空格、TAB',
            'B.2 行宽': '80字符',
            'B.3 语句分隔符': '分号',
            'B.4 变量定义': 'var',
            'B.5 变量名和属性名': '小驼峰',
            'B.6 函数': '函数名括号前不加空格，左大括号前带空格，和语句同一行',
            'B.7 引号': '单引号和双引号',
            'B.8 关联数组的初始化': '每值键对一行',
            'B.9 等号': '全等===,==是隐式类型转换再进行比较',
            'B.10 命名函数': '给构造函数和回调函数起名',
            'B.11 对象定义': '成员函数通过原型定义，属性在构造函数内定义',
            'B.12 继承': '使用 util 模块的inherits 函数继承'
        }
    ]
};
